package com.huilian.iotbox.admin.dao;

import com.huilian.iotbox.data.po.Permission;
import com.huilian.iotbox.data.vo.UserInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author 少凡
 * @date 2020/2/26 16:46
 */
@Mapper
public interface PermissionDao {

    List<Permission> findTopMenusByRole(@Param("list") List<Integer> roleIdList, @Param("nav") Boolean nav, @Param("permissionId") String permissionId, @Param("platformType") Integer platformType);
    List<Permission> findTopMenusByUser(@Param("userId") Integer userId, @Param("nav") Boolean nav, @Param("permissionId") String permissionId, @Param("platformType") Integer platformType);

    /**
     * 根据角色ID找出所有二级以下的菜单
     *
     * @return
     */
    List<Permission> findChildrenMenusByRole(
            @Param("list") List<Integer> roleIdList,
            @Param("nav") Boolean nav,
            @Param("permissionId") String permissionId,
            @Param("userInfo") UserInfo userInfo,
            @Param("platformType") Integer platformType
    );
    /**
     * 根据角色ID找出所有二级以下的菜单
     *
     * @return
     */
    List<Permission> findChildrenMenusByUser(
            @Param("userId") Integer userId,
            @Param("nav") Boolean nav,
            @Param("permissionId") String permissionId,
            @Param("userInfo") UserInfo userInfo,
            @Param("platformType") Integer platformType
    );

    /**
     * 根据角色ID找出所有的子权限，菜单和根限
     *
     * @return
     */
    List<Permission> findAllChildren(@Param("list") List<Integer> roleIdList, @Param("noAuth") Boolean noAuth, @Param("platformType") Integer platformType);

    Integer insert(Permission permission);

    Integer update(Permission permission);

    Integer findChildrenCount(@Param("id") Integer id);

    Integer delete(@Param("id") Integer id);

    List<Permission> findTopPermission(@Param("list") List<Integer> roleIdList, @Param("platformType") Integer platformType);

    List<Permission> findNoAuthList(Integer platformType);

    Permission findOnePermissionById(Integer id);
}
